using System;
using System.Collections;
using LibreriaBusiness;
using LibreriaCommon;
using LibreriaData;
using SistemaControlTraficoLibDS;
using SistemaControlTraficoLibData;

namespace SistemaControlTraficoLibBusiness
{
    public abstract class boViajeBase : boBase, IDisposable
    {
        protected daViaje viaje = null;

        public boViajeBase(SecurityInfo securityInfo) : base(securityInfo)
        {
            viaje = new daViaje(securityInfo);
        }

        #region Dispose
        private bool disposed = false;

        public virtual void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (!this.disposed)
            {
                if (disposing)
                {
                    viaje.Dispose();
                }
                //liberar recursos no manejados
            }
            disposed = true;
        }

        ~boViajeBase()
        {
            Dispose(false);
        }
        #endregion Dispose

        public virtual dsViaje Find(int viajeID)
        {
            try
            {
                return viaje.FindByPrimaryKey(viajeID);
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }

        public virtual dsViaje.ViajeRow FindRow(int viajeID)
        {
            try
            {
                return viaje.FindRow(viajeID);
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }

        public virtual dsViaje.ViajeRow GetRow(dsViaje.ViajeDataTable dt)
        {
            try
            {
                return dt[0];
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }

        public virtual dsViaje FindByEstado(Constants.EstadosEnum estado)
        {
            try
            {
                if (estado == Constants.EstadosEnum.Todos)
                {
                    return viaje.FindByEstado(System.DBNull.Value);
                }
                else
                {
                    return viaje.FindByEstado(estado);
                }
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }

        public virtual void Update(dsViaje ds)
        {
            try
            {
                viaje.Update(ds);
            }
            catch (daException ex)
            {
                throw new boException(ex);
            }
        }

    }
}

